package cn.dev33.satoken.three.addprefix;

import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.strategy.SaStrategy;

import java.util.Map;

/**
 * 示例：自定义 StpLogic 的实现类，并重写部分方法，扩展功能
 *
 * @author xxx
 * @since 1.35.0
 */
public class StpLogicForAddPrefix extends StpLogic {

    public StpLogicForAddPrefix() {
        super(StpUtil.TYPE);
        System.out.println("------------- 自定义的 StpLogicForAddPrefix 组件被加载 -------------");
    }

    public StpLogicForAddPrefix(String loginType) {
        super(loginType);
    }

    /**
     * 重写 createToken 方法，这样当框架创建 token 时，就会执行我们自定义的逻辑
     */
    @Override
    public String createTokenValue(Object loginId, String device, long timeout, Map<String, Object> extraData) {
        // 拼接上指定前缀
        return "sa-token--" + SaStrategy.instance.createToken.apply(loginId, loginType);
    }

}
